package com.bbcare.nutritious.plat.store.ibatis;

import java.util.List;
import java.util.Map;

import com.bbcare.followup.plat.entity.Patient;
import com.bbcare.nutritious.plat.entity.PtCourseBespeak;
import com.bbcare.nutritious.plat.entity.PtCourseInfo;
import com.bbcare.nutritious.plat.entity.PtWeight;
/**
 * 课程
 * @author ZCL
 *
 */
public interface ICourseDao {
	/**
	 * 保存课程信息
	 */
	void saveCourseInfo(PtCourseInfo courseInfo);
	/**
	 * 修改课程信息
	 */
	void updateCourseInfo(PtCourseInfo courseInfo);
	/**
	 * 保存课程预约信息
	 */
	void saveCourseBespeak(PtCourseBespeak courseBespeak);
	/**
	 * 保存课程预约操作历史
	 */
	void saveCourseBespeakHis(PtCourseBespeak courseBespeak);
	/**
	 *  修改课程预约信息 
	 */
	void updateCourseBespeak(PtCourseBespeak courseBespeak);
	/**
	 * 分页查询课程
	 */
	List<PtCourseInfo> listCourseInfo(PtCourseInfo courseInfo);
	/**
	 * 条件查询课程
	 * @param courseInfo
	 * @return
	 */
	List<PtCourseInfo> listCourseInfoForAll(PtCourseInfo courseInfo);
	/**
	 * 统计     分页查询课程
	 */
	int countCourseInfo(PtCourseInfo courseInfo);
	/**
	 * 通过id获取课程
	 */
	PtCourseInfo getCourseInfoById(int id);
	/**
	 * 根据用户查询最近四天的所有课程
	 */
	List<PtCourseInfo> getCourseForFourDay(PtCourseInfo courseInfo);
	/**
	 * 查询四天的所有课程
	 * @param courseInfo
	 * @return
	 */
	List<PtCourseInfo> getCourseForFourDayOfAll(PtCourseInfo courseInfo);
	/**
	 * 统计当前日期后还有几天的课程,最多统计四天
	 */
	int countCourseForFourDay(PtCourseInfo courseInfo);
	/**
	 * 通过userid和courseid+状态    统计
	 */
	int countCourseBespeak(PtCourseBespeak courseBespeak);
	/**
	 * 通过预约id获取预约信息 
	 */
	PtCourseBespeak getCourseBespeakById(String courseBespeakId);
	/**
	 * 分页查询课程预约信息
	 */
	List<PtCourseBespeak> listCourseBespeakForPage(PtCourseBespeak courseBespeak);
	/**
	 * 预约数据查询
	 * @param courseBespeak
	 * @return
	 */
	List<PtCourseBespeak> listCourseBespeak(PtCourseBespeak courseBespeak);
	/**
	 * 分页查询课程预约信息    统计
	 * @param courseBespeak
	 * @return
	 */
	int countCourseBespeakForPage(PtCourseBespeak courseBespeak);
	/**
	 * 查询过期的预约信息
	 * @param courseBespeak
	 * @return
	 */
	List<PtCourseBespeak> listCourseBespeakOverdue();
	/**
	 * 查询有课程的最近四天日期 
	 */
	List<String> getCourseDayOfFour();
	
	/**
     * 查询患者list
     * 
     * @param 定制
     * @return list
     */
    public List<Map<String, Object>> selectPatient(Map<String, Object> paramMap) throws Exception;
    /**
     * 通过条件查询用户
     * @param paramMap
     * @return
     * @throws Exception
     */
    public List<Map<String, Object>> selectPatientByParamForCourse(Map<String, Object> paramMap) throws Exception;
}
